package com.ruoyi.lvlian.mapper;

import java.util.List;

import com.ruoyi.lvlian.domain.InvoiceInfo;
import com.ruoyi.lvlian.domain.PaymentInfo;
import com.ruoyi.lvlian.dto.PaymentInfoDto;
import com.ruoyi.lvlian.vo.PaymentInfoDashboardVo;
import com.ruoyi.lvlian.vo.PaymentInfoVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 支付信息Mapper接口
 *
 * @author liyuxi
 * @date 2024-05-13
 */
@Repository
public interface PaymentInfoMapper {


    /**
     * 查询支付信息
     *
     * @param id 支付信息主键
     * @return 支付信息
     */
    public PaymentInfo selectPaymentInfoById(String id);

    /**
     * 查询支付信息列表
     *
     * @param paymentInfo 支付信息
     * @return 支付信息集合
     */
    public List<PaymentInfoVo> selectPaymentInfoList(PaymentInfoDto paymentInfo);

    /**
     * 新增支付信息
     *
     * @param paymentInfo 支付信息
     * @return 结果
     */
    public int insertPaymentInfo(PaymentInfo paymentInfo);

    /**
     * 修改支付信息
     *
     * @param paymentInfo 支付信息
     * @return 结果
     */
    public int updatePaymentInfo(PaymentInfo paymentInfo);

    /**
     * 删除支付信息
     *
     * @param id 支付信息主键
     * @return 结果
     */
    public int deletePaymentInfoById(String id);

    /**
     * 批量删除支付信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePaymentInfoByIds(String[] ids);

    public List<PaymentInfoVo> queryGetPaymentListByInvoiceId(String id);

    /**
     * 根据发票的销售方和购买方, 查询对应支付单信息
     * @param invoiceInfo
     * @return
     */
    public List<PaymentInfoVo>  selectPaymentInfoListByTwo(InvoiceInfo invoiceInfo);

    public String isWithInvoice(String paymentNum);

    List<PaymentInfoVo> queryPaymentInfoInvioceList(PaymentInfoDto paymentInfo);

    void updateInvoiceInfoPaymentInfoRefTotalUseAmount();

    /**
     * 根据发票ids批量删除 发票-利废
     * @param invoiceId
     * @return
     */
    int deletePaymentRefByInvoiceIds(String[] invoiceId);

    List<PaymentInfoVo> queryPaymentInfoListByInvoiceNum(PaymentInfoDto paymentInfo);

    int batchSave(@Param("dtoList")  List<PaymentInfo> dtoList);
    void batchDelete( @Param("ids")  String[] ids );

    PaymentInfoDashboardVo queryPaymentInfoAgg( @Param("category")String category,  @Param("invoiceNum")String invoiceNum);
}
